<!--
<h1>The XORP Vision</h1>

XORP is called an <i>extensible</i> router platform for good reason.  We believe that by designing for extensibility from the outset, we can simultaneously satisfy several different user groups:
<ul>

<li><a href="#research">Network researchers</a> needing a platform for experimentation.</li>

<li><a href="#operators">Network operators</a> needing a low-cost stable routing platform on
commodity hardware.</li>

<li><a href="#vendors">Network equipment vendors</a> with special purpose hardware.</li>

<li><a href="#applications">Network application</a> writers looking for an open platform to
support their applications.</li>
</ul>

Only time will tell if we're right, but in this note we'll try and
explain where we hope to go from here.  Of course we'll only get there
with good luck and a lot of help from all of these communities.

<h2><a name="research">Network Research</a></h2>

There are a lot of very smart people in the network research
community, but it's difficult for many of these people to do experiments
that give meaningful results.  A lot of work happens in simulation,
but often it's hard to know whether the simulation bears much
relationship to reality.  There's really no substitute for trying
something out in the real world.  This is where XORP comes in.
<p>
Here are some examples of how XORP can be used:
<ul>

<li> If XORP is used as a production router, it is easy to instrument
it to perform measurements of traffic, routing messages, or
practically anything else that goes on in a router.  </LI>

<li> XORP can be used as a platform to develop new routing protocols.
XORP has no built-in concept of which routing protocols exists, so you
can easily add your own, together with an ASCII <a
href="releases/current/docs/rtrmgr/rtrmgr.pdf">configuration template
file</a>, so the XORP command line interface knows what new
functionality is available.</li>

<li> XORP can be used as a <a
href="http://www.tel.fer.hr/imunes/index.en.shtml">network emulator</a>.
XORP's Forwarding Engine Abstraction (FEA) process provides an
abstract interface through which the whole control plane communicates
with the forwarding plane and the outside world.  It is possible to
modify the FEA so that multiple emulated routers all exist on the same
host.  This allows experiments using XORP's real routing code to take
place in a carefully controlled environment.  It also facilitates new
protocol development without needing a large lab of machines.</li>

<li>XORP is scriptable.  XORP's internal communication between
processes uses <a
href="/releases/current/docs/libxipc/libxipc_overview.pdf">XRLs</a>.
These have a canonical form that is ASCII, such as 
<pre>
finder://fea/fti/0.1/add_route?net:ipv4net=10.0.0.1/8&amp;\
                     gateway:ipv4=192.150.187.1
</pre>
There's a command line program <b>call_xrl</b> that allows any
scripting language to make calls to any XORP process and get back the
response.  How you use this scripting capability is up to you, but we
think it is unique in its ability to allow novel uses of existing
router code.</li>
</ul>

<h2><a name="operators">XORP as a Low-Cost Router</a></h2>
<p>
There are many organizations that need router functionality, but
cannot justify buying an expensive commercial router.  Although there
are low-cost home routers available these days, they are not really
intended to run any non-trivial routing configuration.  A modern $300
PC has enough forwarding capability to saturate a few 100Mb/s network
links, and ethernet NICs are extremely cheap, so with a little
knowledge, it's very viable to build your own PC-based router.
<p>
The goal is that you shouldn't need to know anything about how XORP
works internally to run it as a router.  XORP has a single unified
command line interface which allows all the routing protocols, network
interfaces, and so forth to be configured.  In future releases, this
CLI will also be extended to encompass additional router functionality
such as queue manangement, QoS configuration, firewalls, NATs and DHCP
configuration.
<p>
XORP already supports IPv4 and IPv6, together with BGP4+ and RIP for
unicast routing, PIM-SM and IGMP/MLD for multicast, and limited SNMP
support.  
<p>
We offer XORP as a Live CD - a CD image that you can burn to a
bootable CD which allows you to run XORP without installing any
software or knowing anything about Unix system administration.  As it
runs from a read-only CD, this configuration is more secure than a
normal Unix installation.
<p>
On the subject of security, the XORP architecture permits different
routing protocols to run in different security sandboxes.  For
example, BGP does not need access to the router's filesystem or need
privileged access to communicate with its peers so, should something
go wrong, it's much harder to compromise the rest of the router.  The
aim is for XORP to be more robust and secure than alternative router
platforms.
<p>
It is very important to us that XORP is both very stable and has
sufficient features for mission-critical production use.  We'll
realise this goal only with extensive feedback from our users with
regards to what works well in the real world, and what doesn't.


<h2><a name="vendors">XORP for Equipment Vendors</a></h2>
<p>
Once XORP has proven itself as a stable software stack for PC routers,
and its functionality and feature set filled out fully, we hope it
will prove an attractive alternative to commercial stacks for network
equipment vendors.  
<p>
XORP is primarily licensed under the GPL <a href="license.html">license</a>,
which allows you to use it for any purpose whatsoever.  If you use
XORP in a product, you don't need to tell anyone, or provide source
code to customers, unless of course you want to.
<p>
We believe XORP's architecture is well suited as a software stack to
control an advanced hardware forwarding plane.  Our forwarding engine
abstraction (FEA) process provides a key abstraction layer providing
isolation between all the higher level routing functionality and the
underlying operating system and forwarding engines.  This should make
XORP comparatively easy to port to new platforms.

<h2><a name="applications">XORP for Network Application Writers</a></h2>
<p>
In the long run, we hope that XORP will enable a class of software
that currently doesn't exist: the <I>router application</I>.  Currently,
there is no market for third party software for mainstream commercial
router platforms.  This is clearly because there are no open APIs for
commercial router platforms.  
<p>
We believe that XORP's extensible
architecture is a possible solution to this problem.  XORP's novel
inter-process communication mechanism, combined with it's run-time
extensible router-manager process and command line interface should
permit a router operator to install a new binary application process
on a XORP router, and for it to appear as an integrated part of the
router from an operational point of view.  We are very interested to
see what novel network functionality this enables in the future.
-->
